//
//  ViewController.swift
//  颖姐姐
//
//  Created by wu on 2017/6/22.
//  Copyright © 2017年 wu. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    fileprivate lazy var listViewModel = ViewModel()
    
    /// tableView 懒加载
    fileprivate lazy var tableView:UITableView = {
        let tableView = UITableView(frame: UIScreen.main.bounds, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
//        tableView.rowHeight = UITableViewAutomaticDimension
////        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
//        
//        tableView.estimatedRowHeight = 300
//        tableView.row
        
        tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "cell")
        return tableView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
        loadData()
    }
}
// MARK: - 私有方法
fileprivate extension ViewController{
    /// 初始化UI
    func setupUI() {
        view.addSubview(tableView)
    }
    /// 加载网络数据
    func loadData() {
        /// weakSelf 的写法 [weak self]
        listViewModel.loadData {[weak self] (isComplete) in
            
            self?.tableView.reloadData()
        }
    }
}
extension ViewController:UITableViewDelegate,UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listViewModel.array.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let model = listViewModel.array[indexPath.row]
        let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
        cell.model = model
        return cell
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        let model = listViewModel.array[indexPath.row]
        
        return model.height
    }
}
